"""
    字典是以大括号开始和结束的,以逗号隔开键值对的一种数据类型.主要是存放有多个属性的元素数据的.
    比如:京东上的鞋子的数据,每一双鞋的数据都是由一个字典组成.比如:
        {
            "foot_name":"KUDANG 运动鞋男夏季2020新款轻便减",
            "price":99.0,
            "type":["包裹性","跑道","透气技术","跑步"],
            "shop":"库当运动旗舰店"
        }

        {
            "name":"张飞",
            "age":28
        }

        {
            "status":200,
            "msg":"sucess",
            "data":""
        }
    字典的value可以是列表数据类型
    字典转换为字符串 就是JSON数据

    增: 添加元素
    删: 移除元素
    改: 修改元素
    查: 查询元素
"""

if __name__ == '__main__':
    # 1.定义字典
    # 结构简单
    simple_dict = {"status":200,"msg":"success","data":"简单的字典"}
    # 结构复杂  比如说 字典中value嵌套列表
    dict_ = {
            "foot_name":"KUDANG 运动鞋男夏季2020新款轻便减",
            "price":99.0,
            "type":["包裹性","跑道","透气技术","跑步"],
            "shop":"库当运动旗舰店"
        }
    # 结构复杂  字典中嵌套字典
    # 鞋子中有鞋子的属性  旗舰店也有自己的一些属性 比如地址 和商品类型
    complex_dict = {
            "foot_name":"KUDANG 运动鞋男夏季2020新款轻便减",
            "price":99.0,
            "type":["包裹性","跑道","透气技术","跑步"],
            "shop":{"name":"库当运动旗舰店","address":"北京市海淀区"}
        }

    # 问题:列表中是否可以嵌套字典? 可以 比如用一个列表来表示班级有很多学生
    # 列表中也可以嵌套列表 或者元组
    cls_list = [
        {"name":"张飞","age":"28"},
        {"name": "刘备", "age": "28"},
        {"name": "关羽", "age": "30"}
    ]

    # 2.添加元素  --->一个元素就是一个键值对
    my_dict = {}
    my_dict["name"] = "Teacher Zhang"
    print(my_dict)

    # 问题: 能否继续添加一次上面这个内容?
    # 注意 并不行 ,如果key已经存在的话 再次添加就是修改
    # 3.修改的操作和添加的操作一致 只要key已经存在就是修改
    my_dict["name"] = "Teacher Colin"
    print(my_dict)

    # 3.删除元素  del 通过指定key 删除对应的key-value键值对
    del my_dict["name"]
    print(my_dict)

    # KeyError: 'name' 注意:如果要删除的key 不存在 则报错 KeyError
    # del my_dict["name"]


    my_dict["name"] = "Teacher Liu"
    my_dict["age"] = "Teacher 30"
    print(my_dict)
    # 4.清空元素  删除所有内容
    my_dict.clear()
    print(my_dict)

    # 5.查询元素 单个查询 通过key可以获取到value
    second_dict =  {
            "foot_name":"KUDANG 运动鞋男夏季2020新款轻便减",
            "price":99.0,
            "type":["包裹性","跑道","透气技术","跑步"],
            "shop":{"name":"库当运动旗舰店","address":"北京市海淀区"}
        }

    # 获取鞋子的价格 通过[key]形式获取value的时候 如果key不存在 则报错.
    price = second_dict["price"]  # KeyError: 'abc'
    print(price)

    # 使用get函数也可以获取到value值 而且如果key不存在 则返回None
    getPrice = second_dict.get("price")
    print(getPrice)

    # 练习: 如何获取字典中的商店的地址? postman中的js操作类似
    addr = second_dict.get("shop").get("address")
    print(addr)

    # 6.字典的遍历[循环] 字典本身不支持循环 一般来讲使用循环获取的都有索引 但是字典没有
    # 字典中有可以获取key的列表的操作 以及 key-value列表的操作

    # 获取字典的所有的key
    key_list = second_dict.keys()
    for key in key_list:
        print(key)
        # 通过key可以间接获取value
        print(second_dict.get(key))

    # 获取字典中的所有key-value
    item_list = second_dict.items()
    for key,value in item_list:
        print(key)
        print(value)
